From 3ed6d71247b6ef3c701654824f5b4c961eacfd61 Mon Sep 17 00:00:00 2001 From: Ian Campbell Date: Fri, 26 Apr 2013 12:41:43 +0100 Subject: [PATCH] libxl: stat the path for all non-qdisk backends (including unknown) MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The commit a8a1f236a296 "libxl: Only call stat() when adding a disk if we expect a device to exist." changed things to only stat the file when the phy backend was explicitly requested. This broke the case where we are probing and would normally be able to decide on the phy option. Since the intention of that commit was to allow for backends with no explicit file in dom0 (i.e. network remote backend such as ceph) the lowest impact fix appears to be to make that explicit. It turns out that tap disk can also potentially handle such paths. The only backend which requires a local file/device is PHY but we need to handle UNKNOWN too in order for subsequent probing to work. Note that it is not possible to autoprobe the backend if the path is not a local object, so we don't need to worry about autoprobing ceph etc. This should probably be revisited to rationalize the probing. Signed-off-by: Ian Campbell Acked-by: Roger Pau Monné --- tools/libxl/libxl_device.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/libxl/libxl_device.c b/tools/libxl/libxl_device.c index eb60fd543b..a826ecef75 100644 --- a/tools/libxl/libxl_device.c +++ b/tools/libxl/libxl_device.c @@ -236,7 +236,8 @@ int libxl__device_disk_set_backend(libxl__gc *gc, libxl_device_disk *disk) { return ERROR_INVAL; } memset(&a.stab, 0, sizeof(a.stab)); - } else if (disk->backend == LIBXL_DISK_BACKEND_PHY && + } else if ((disk->backend == LIBXL_DISK_BACKEND_UNKNOWN || + disk->backend == LIBXL_DISK_BACKEND_PHY) && disk->backend_domid == LIBXL_TOOLSTACK_DOMID && !disk->script) { if (stat(disk->pdev_path, &a.stab)) { -- 2.30.2